#!/usr/bin/env python3
"""
Flask博客系统启动脚本
用于快速启动开发环境
"""

import os
import sys
import subprocess
from pathlib import Path

def check_python_version():
    """检查Python版本"""
    if sys.version_info < (3, 8):
        print("❌ 错误: 需要 Python 3.8 或更高版本")
        print(f"当前版本: {sys.version}")
        return False
    print(f"✅ Python 版本: {sys.version.split()[0]}")
    return True

def check_virtual_env():
    """检查虚拟环境"""
    if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
        print("✅ 虚拟环境已激活")
        return True
    else:
        print("⚠️  警告: 建议在虚拟环境中运行")
        return False

def install_requirements():
    """安装依赖包"""
    print("📦 安装依赖包...")
    try:
        subprocess.check_call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt'])
        print("✅ 依赖包安装完成")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ 依赖包安装失败: {e}")
        return False

def create_env_file():
    """创建环境配置文件"""
    env_file = Path('.env')
    env_example = Path('env.example')
    
    if not env_file.exists() and env_example.exists():
        print("📝 创建环境配置文件...")
        env_file.write_text(env_example.read_text())
        print("✅ 环境配置文件已创建 (.env)")
        print("💡 请根据需要修改 .env 文件中的配置")
        return True
    return True

def create_upload_dir():
    """创建上传目录"""
    upload_dir = Path('app/static/uploads')
    upload_dir.mkdir(parents=True, exist_ok=True)
    print("✅ 上传目录已创建")

def start_application():
    """启动应用"""
    print("🚀 启动Flask博客系统...")
    print("📍 访问地址: http://localhost:5000")
    print("🔧 管理后台: http://localhost:5000/admin")
    print("👤 默认账户: admin / admin123")
    print("⏹️  按 Ctrl+C 停止服务")
    print("-" * 50)
    
    try:
        from app import create_app
        app = create_app('development')
        app.run(host='0.0.0.0', port=5000, debug=True)
    except KeyboardInterrupt:
        print("\n👋 服务已停止")
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        return False

def main():
    """主函数"""
    print("🎉 欢迎使用 Flask 个人博客系统!")
    print("=" * 50)
    
    # 检查Python版本
    if not check_python_version():
        return
    
    # 检查虚拟环境
    check_virtual_env()
    
    # 安装依赖
    if not install_requirements():
        return
    
    # 创建配置文件
    create_env_file()
    
    # 创建必要目录
    create_upload_dir()
    
    print("=" * 50)
    print("✅ 环境准备完成!")
    print()
    
    # 启动应用
    start_application()

if __name__ == '__main__':
    main()

